<template>
    <div>
      <div class="bg-white grid-content">
        <div style="overflow: hidden; padding-bottom:8px;">
          <div class="mytitle"><svg-icon icon-class="yjbb" class="myIcon" />生产系统日计量数据</div>
          <div class="myButtons">
            <el-button @click="handleClick('', 'add')">新增</el-button>
            <a :href=token><el-button style="margin: 0 10px;">下载模板</el-button></a>
            <el-button
              class="import-button"
              @click="uploadFiles"
            >
              <i class="icon"></i>
              批量导入
            </el-button>
            <el-dialog title="批量导入" :visible.sync="importDialog" class="dialog-md" width="500px" :before-close="handleClose1">
              <el-form ref="fileForm" label-position="center" style="width: 100%" enctype="multipart/form-data">
                <el-form-item align="center" label="">
                  <el-upload
                    ref="upload"
                    class="uploadDialog"
                    name="myfile"
                    action="string"
                    :http-request="httpRequest"
                    :on-change="handleChange"
                    :on-remove="handleRemove"
                    :limit="1"
                    :file-list="fileList"
                    accept=".xlsx,.xls"
                    :auto-upload="true"
                  >
                    <el-button slot="trigger" size="small" type="primary">上传文件</el-button>
                    <div class="el-upload__tip" style="color: grey;">建议下载模板进行导入</div>
                    <div class="el-upload__tip">1.仅支持上传.xls、.xlsx文件</div>
                    <div class="el-upload__tip">2.文件数据不能超过1000条</div>

                  </el-upload>
                </el-form-item>
              </el-form>
              <span slot="footer" class="dialog-footer">
                <el-button size="small" @click="cancelUpload()">取消</el-button>
                <el-button type="primary" size="small" @click="upload()" :disabled="uploading">确定导入</el-button>
              </span>
            </el-dialog>
          </div>
        </div>
        <!-- 表格 -->
        <el-table :data="tableData" :header-cell-style="{background:'#F5F7FA',color:'#909399'}" border stripe>
          <!-- <el-table-column align="center" type="index" label="序号" :index="indexMethod" width="60">
            </el-table-column> -->
            <el-table-column align="center" prop="xh" label="序号">
            </el-table-column>
            <el-table-column align="center" prop="jgmc" label="所属机构">
            </el-table-column>
            <el-table-column align="center" prop="rq" label="日期">
            </el-table-column>
            <el-table-column align="center" prop="zs" label="注水">
            </el-table-column>
            <el-table-column align="center" prop="zq" label="注气">
            </el-table-column>
            <el-table-column align="center" prop="js" label="集输">
            </el-table-column>
            <el-table-column align="center" prop="jc" label="机采">
            </el-table-column>
            <el-table-column align="center" prop="sh" label="生活">
            </el-table-column>
            <el-table-column align="center" prop="zqdyq" label="注气队一期">
            </el-table-column>
            <el-table-column align="center" prop="zqdeq" label="注气队二期">
            </el-table-column>
            <el-table-column align="center" prop="qt1" label="其他1">
            </el-table-column>
            <el-table-column align="center" prop="qt2" label="其他2">
            </el-table-column>
            <el-table-column align="center" prop="qt3" label="其他3">
            </el-table-column>
            <el-table-column align="center" prop="qt4" label="其他4">
            </el-table-column>
            <el-table-column align="center" prop="hj" label="合计">
            </el-table-column>
            <el-table-column align="center" prop="bz" label="备注">
            </el-table-column>

            <el-table-column align="center" prop="approveStatus" width="180px" fixed="right" label="审核">
                <template slot-scope="scope">
                  <el-button v-if="scope.row.approveStatus == 0" @click="handSubmit(scope.row)" type="text" style="color: orange">提交审核</el-button>
                  <el-tooltip v-else :content="scope.row.approveBz" placement="right" effect="light" :disabled="!scope.row.approveBz">
                    <el-badge :is-dot="scope.row.approveBz!=''&&scope.row.approveBz!=null" class="item">
                      <el-tag :class="scope.row.approveBz?'tagstyle':''"
                      :type="
                        scope.row.approveStatus == '5'
                        ?'success'
                        :scope.row.approveStatus == '4'
                          ? 'danger'
                          : scope.row.approveStatus == '3'
                            ? ''
                            :scope.row.approveStatus == '2'
                              ? 'danger'
                              :scope.row.approveStatus == '1'
                                ? 'warning'
                                :'info'"
                        disable-transitions>{{
                        scope.row.approveStatus == '5'
                        ?'管理部通过'
                        :scope.row.approveStatus == '4'
                          ? '管理部未通过'
                          : scope.row.approveStatus == '3'
                            ? '作业区通过待管理部审核'
                            :scope.row.approveStatus == '2'
                              ? '作业区未通过'
                              :scope.row.approveStatus == '1'
                                ? '已上报待作业区审核'
                                :'待上报'
                      }}</el-tag>
                    </el-badge>
                  </el-tooltip>
                </template>
              </el-table-column>

            <el-table-column align="center" fixed="right" label="操作" width="140">
              <template slot-scope="scope">
                <el-button @click="handleClick(scope.row, 'check')" type="text" style="color: #2ec02e">查看</el-button>
                <el-button @click="handleClick(scope.row, 'edit')" type="text">编辑</el-button>
                <el-button @click="handleDelete(scope.row)" type="text" style="color: red">删除</el-button>
              </template>
            </el-table-column>
          </el-table>
        <!-- 分页器 -->
        <el-pagination align='right'
            background
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="pageNo"
            :page-sizes="[5,10, 20, 30, 40, 50]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total">
          </el-pagination>
      </div>

      <!-- 弹出框 -->
      <el-dialog :title="myDialogTitle" :visible.sync="dialogFormVisible" :before-close="handleClose" custom-class="saveAsDialog">

        <el-form :inline="true" :model="scxttjlsjForm" class="demo-form-inline" :rules="rules" ref="scxttjlsjForm" :disabled="isInput" label-position="left" label-width="130px" >
          <!-- <el-divider content-position="left">基础信息</el-divider> -->
          <el-row>
            <el-col :span="12">
                <el-form-item label="序号:" prop="xh">
                  <el-input v-model="scxttjlsjForm.xh" placeholder="请输入序号"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="所属机构:" prop="orgId">
                  <el-select v-model="scxttjlsjForm.orgId" placeholder="请选择所属机构" filterable>
                    <el-option
                        v-for="(item,index) in jgList"
                        :key="item.jgid"
                        :label="item.jgmc"
                        :value="item.jgid"
                    />
                  </el-select>
                </el-form-item>
              </el-col>

            </el-row>

            <el-row>
                <el-col :span="12">
                <el-form-item label="日期:" prop="rq">
                  <el-date-picker v-model="scxttjlsjForm.rq" align="right" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
                  </el-date-picker>
                </el-form-item>
              </el-col>
                <el-col :span="12">
                <el-form-item label="注水:">
                  <el-input v-model="scxttjlsjForm.zs" placeholder="请输入注水"></el-input>
                </el-form-item>
              </el-col>


            </el-row>

            <el-row>
                <el-col :span="12">
                <el-form-item label="注气:">
                  <el-input v-model="scxttjlsjForm.zq" placeholder="请输入注气"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="集输:">
                  <el-input v-model="scxttjlsjForm.js" placeholder="请输入集输"></el-input>
                </el-form-item>
              </el-col>


            </el-row>

            <el-row>
                <el-col :span="12">
                <el-form-item label="机采:">
                  <el-input v-model="scxttjlsjForm.jc" placeholder="请输入机采"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="生活:">
                  <el-input v-model="scxttjlsjForm.sh" placeholder="请输入生活"></el-input>
                </el-form-item>
              </el-col>

            </el-row>
            <el-row>
                <el-col :span="12">
                <el-form-item label="注气队一期:">
                  <el-input v-model="scxttjlsjForm.zqdyq" placeholder="请输入注气队一期"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="注气队二期:">
                  <el-input v-model="scxttjlsjForm.zqdeq" placeholder="请输入注气队二期"></el-input>
                </el-form-item>
              </el-col>

            </el-row>
            <el-row>
                <el-col :span="12">
                <el-form-item label="其他1:">
                  <el-input v-model="scxttjlsjForm.qt1" placeholder="请输入其他1"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="其他2:">
                  <el-input v-model="scxttjlsjForm.qt2" placeholder="请输入其他2"></el-input>
                </el-form-item>
              </el-col>

            </el-row>
            <el-row>
                <el-col :span="12">
                <el-form-item label="其他3:">
                  <el-input v-model="scxttjlsjForm.qt3" placeholder="请输入其他3"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="其他4:">
                  <el-input v-model="scxttjlsjForm.qt4" placeholder="请输入其他4"></el-input>
                </el-form-item>
              </el-col>

            </el-row>
            <el-row>
                <el-col :span="12">
                <el-form-item label="合计:">
                  <el-input v-model="scxttjlsjForm.hj" placeholder="请输入合计"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="备注:">
                  <el-input v-model="scxttjlsjForm.bz" placeholder="请输入备注"></el-input>
                </el-form-item>
              </el-col>
            </el-row>


        </el-form>

        <div slot="footer" class="dialog-footer" v-show="!ischeck">
          <el-button @click="close('scxttjlsjForm')">取 消</el-button>
          <el-button type="primary" @click="submitForm('scxttjlsjForm')">确 定</el-button>
        </div>
      </el-dialog>
    </div>
  </template>

  <script>
  import axios from "axios";
  import { getToken } from "@/utils/auth";
  import zzjgApi from '@/api/jcsj/jcsy/zzjg';
  import jlApi from '@/api/jcsj/scgl/scxttjlsj/scxttjlsj';

  export default {
    data() {
      return {
        leve:'',
        // show:false,//隐藏序列
        pageNo: 1, //当前页码
        pageSize: 10, //每页显示数量
        total: 0, //总数量
        // table数据
        tableData: [],
        //当前页码
        currentPage: 1,
        //表单填报的数据
        scxttjlsjForm: {
          orgId:'',
          xh:'',
          rq:'',//日期
          jgmc:'',//
          zs: '',//注水
          zq: '',//注气
          js:'',//集输
          jc:'',//机采
          sh:'',//生活
          zqdyq: '',//注气队一期
          zqdeq: '',//注气队二期
          qt1:'',//其他1
          qt2:'',//其他2
          qt3:'',//其他3
          qt4: '',//其他4
          hj: '',//合计
          bz: '',//备注
          approveStatus:'',
          approveBz:'',
        },
        //验证规则
        rules: {
          orgId: [
            { required: true, message: '请选择机构', trigger: 'blur' },
          ],
          rq: [
            { required: true, message: '请选择日期', trigger: 'blur' },
          ],
          xh: [
            { required: true, message: '请输入序号', trigger: 'blur' },
          ],
        },
        //时间快捷选择
        pickerOptions: {
          // disabledDate(time) {
          //   return time.getTime() > Date.now();
          // },
          shortcuts: [{
            text: '今天',
            onClick(picker) {
              picker.$emit('pick', new Date());
            }
          }, {
            text: '昨天',
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24);
              picker.$emit('pick', date);
            }
          }, {
            text: '一周前',
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit('pick', date);
            }
          }]
        },
        //获取当前日期
        currentTime:'',
        //编辑框是否显示
        dialogFormVisible: false,
        //弹出框是否是查看
        ischeck: false,
        //控制查看时不可更改数据
        isInput:false,
        //弹出框标题
        myDialogTitle: '',
        //是否新增
        isadd: true,
        //获取机构列表
        jgList:[],

        file: null,
        //加载动画
        uploadLoading: false,
        //上传的文件列表
        fileList: [],
        //控制弹出框显示与否
        uploadShowDialog: false,
        //上传地址
        uploadURL: '',
        //loading加载中
        downloadLoading: '',
        importDialog:false,
        fileList:[],
        urlFile:'',
        uploading:true,
        token:'',
      }
    },
    created(){
      this.search();
      this.$data.leve = sessionStorage.getItem("userLeve");
      this.token="http://47.108.251.250:3296/api/scxtrjlsj/downLoadExcel?token="+getToken();
    },
    mounted(){
      this.searchJh();
      this.filterTime();
    },
    methods: {
      /**
      * 查询列表
      */
      async search() {
        // this.pageNo = pageNo; //当前页码
        // this.pageSize = pageSize; //每页显示数量
        //发送查询请求
        let res = await jlApi.getList({pageNo:this.pageNo,pageSize:this.pageSize});
        //判断是否成功
        if(res.success){
          console.log("jiliang",res.data);
          //赋值
          this.tableData = res.data.records;
          //总数量
          this.total = res.data.total;
        }
      },
      //查询机构列表
      async searchJh() {
        //发送查询请求
        let res = await zzjgApi.getList({pageNo:-1,pageSize:-1});
        //判断是否成功
        if(res.success){
          console.log('jg'+res.data.records);
          //赋值
          this.jgList = res.data.records;
          //总数量
        }
      },
      onSubmit() {
        console.log('submit!');
      },
      //关闭对话框
      handleClose(done) {
        // 清空表单
        // this.$refs['scxttjlsjForm'].resetFields();
        // 清空表单校验，避免再次进来会出现上次校验的记录
        this.$refs['scxttjlsjForm'].clearValidate()
        done()

      },
        // 弹框关闭触发
      close(formName) {
        this.dialogFormVisible = false;
        // 清空表单
        // this.$refs[formName].resetFields();
        // 清空表单校验，避免再次进来会出现上次校验的记录
        this.$refs[formName].clearValidate()
      },

      submitForm(formName) {
        //表单验证
        this.$refs[formName].validate(async (valid)  => {
            if (valid) {
                let res = null;
                console.log('111'+this.scxttjlsjForm.orgId)
                //判断ID是否为空
                if (this.isadd) {
                    console.log(this.scxttjlsjForm)
                    //发送添加请求
                    res = await jlApi.add(this.scxttjlsjForm);
                } else {
                    //编辑时重置审核状态
                    this.scxttjlsjForm.approveStatus = 0
                    this.scxttjlsjForm.approveBz = ''
                    //发送修改请求
                    res = await jlApi.update(this.scxttjlsjForm);
                }
                console.log(res)
                //判断是否成功
                if (res.success) {
                    this.$message.success(res.message);
                    //刷新
                    this.search();
                    //关闭窗口
                    this.dialogFormVisible = false;
                } else {
                  console.log(res)
                    this.$message.error(res.message);
                }
            }
        })
      },
      handleClick(row, handle) {
        // console.log(row.approveStatus);
        this.dialogFormVisible = true;
        if (handle == 'check') {
          this.myDialogTitle = '生产系统日计量数据'
          this.ischeck = true
          this.isInput = true;// 1.表单禁用
          // this.scxttjlsjForm = row
          this.$objCopy(row, this.scxttjlsjForm);//把当前要编辑的数据复制到数据域，给表单回显
          this.$message({ message: '成功打开', type: 'success' });
        } else if (handle == 'edit') {
          if(row.approveStatus == 0 || row.approveStatus == 2 || row.approveStatus == 4){
              this.myDialogTitle = '生产系统日计量数据编辑'
              this.ischeck = false
              this.isInput = false
              this.isadd = false
              this.$objCopy(row, this.scxttjlsjForm);//把当前要编辑的数据复制到数据域，给表单回显
            }else{
              this.dialogFormVisible = false;
              this.$message.error('此状态不可编辑！');
            }

        } else if (handle == 'add') {
          // this.scxttjlsjForm ={}
          this.$resetForm("scxttjlsjForm", this.scxttjlsjForm); //清空表单数据
          this.myDialogTitle = '生产系统日计量数据填报'
          this.ischeck = false
          this.isadd = true
          this.isInput = false
        }
      },

      //删除行数据
      async handleDelete(row) {
        if(row.approveStatus == 0 || row.approveStatus == 2 || row.approveStatus == 4 || this.leve == 999 || this.leve == 1000){
          let confirm = await this.$myconfirm("确定要删除该数据吗?");
          console.log(confirm)
          if (confirm) {
          //发送删除请求
          let res = await jlApi.delete({ xh: row.xh,orgId: row.orgId,rq: row.rq });
          console.log(res)
          //判断是否成功
          if (res.success) {
              //成功提示
              this.$message.success(res.message);
              //刷新
              this.search();
          } else {
              //失败提示
              this.$message.error(res.message);
          }
          }
          }else{
            this.$message.error('此状态不可删除！');
          }



      },
      //上报
      handSubmit(row){
          this.$confirm('确定提交审核?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
            }).then(async () => {
              let res = null;
              this.$objCopy(row, this.scxttjlsjForm);
              //审核
              this.scxttjlsjForm.approveStatus = 1
              console.log(this.scxttjlsjForm);
              res = await jlApi.update(this.scxttjlsjForm);

              console.log(res)
              //判断是否成功
              if (res.success) {
                  // this.$message.success(res.message);
                  this.$message({ message: '提交审核成功！', type: 'success' });
                  //刷新
                  this.search();

              } else {
                console.log(res)
                  this.$message.error(res.message);
              }
            }).catch(() => {
              this.$message({
                type: 'info',
                message: '已取消'
              });
            });

        },
        //批量删除
      handleSelectionChange(val){
        this.multipleSelection = val;
        console.log(this.multipleSelection);
      },
      async handleBDelete() {
        //判断是否可以删除
        //确认是否删除
        let confirm = await this.$myconfirm("确定要删除该数据吗?");
        console.log(confirm)
        var ids = []
        if (confirm) {
            for(let j=0 ; j<this.multipleSelection.length; j++){
                if (this.multipleSelection[j].approveStatus == 2) {
                    //提示不能删除
                    console.log(this.multipleSelection[j].approveStatus)
                    this.$message({ message: '有已通过数据不可删除！', type: 'error' });
                    return;

                }
                ids[j] = this.multipleSelection[j].id
            }
            console.log("ids",ids)
            // const ids = ids.toString();
            // console.log("ids",ids)
            //发送删除请求
            console.log('111')
            let res = await xcwxApi.Bdelete(ids);
            console.log('222')
            console.log(res)
            //判断是否成功
            if (res.success) {
            //成功提示
            this.$message.success(res.message);
            //刷新
            this.search();
            } else {
            //失败提示
            this.$message.error(res.message);
            }
        }
      },

      //批量导入部分
      handleClose1(done) {
        this.urlFile = ''
        this.fileList =[];
        done()
      },
      uploadFiles() {
        this.importDialog = true
        this.urlFile = ''
      },
      cancelUpload(){
        this.urlFile = ''
        this.fileList = [];
        this.importDialog = false
      },
      //  监听改变
      handleChange(file, fileList) {
        this.fileList = fileList
      },
      // 移除
      handleRemove(file, fileList) {
        this.fileList = fileList
      },
      beforeAvatarUpload(file) {
        //1MB=1024*1024(1MB=1024KB 1KB=1024MB)
        const is10M = file.size / 1024 / 1024 < 10;
         //限制文件上传大小
        if (!is10M) {
          this.$message.error("上传图片大小不能超过 10MB!");
          return false
        }
        return true
      },
      //上传成功之后清除历史记录
      // handleSuccess(fileList) {
      //   this.fileList = [];
      //   this.$refs['fileForm'].upload.clearFiles()
      // },
      // 自定义上传Excel方法
      httpRequest(param) {
        // console.log(param.file);
        this.uploading = true;
        const File = this.fileList[0].raw;
        // const File = param.file
        // console.log(File);
        // console.log(this.fileList);
        let formData = new FormData();
        formData.append("myfile", File);
        console.log(formData.get("myfile"));

        axios({
        url: "http://47.108.251.250:3296/api/fileAbout/fileUpload",
        method: "post",
        headers: {
          "token": getToken(),
          "Content-Type": "multipart/form-data",
        },
        data: formData,
          }).then(
            (response) => {
              if (response.data.success === true && response.data.data!=="") {
                console.log(response.data);
                this.urlFile = response.data.data;
                console.log(this.urlFile);
                this.$message.success(response.data.message);
                param.onSuccess();
                this.uploading = false;
              }else{
                this.$message.error('上传失败');
              }
            },
            (error) => {
              console.log(error);
              this.$message.error('上传失败');
            }
          );
      },
      //文件导入
      upload(){
        let formData = new FormData();
        formData.append("filePath",this.urlFile);
        console.log(formData.get("filePath"));
        axios({
        url: "http://47.108.251.250:3296/api/scxtrjlsj/batchInput",
        method: "post",
        headers: {
          "token": getToken(),
          "Content-Type": "multipart/form-data",
        },
        data: formData,
          }).then(
            (response) => {
              if (response.data.success === true) {
                console.log(response.data);
                this.$message.success(response.data.message);
                //刷新
                this.search();
                //关闭窗口
                this.importDialog = false;
                this.fileList = [];
              }else{
                this.$message.error('导入失败');
              }
            },
            (error) => {
              console.log(error);
              this.$message.error('导入失败');
            }
          );
      },


      //下载模板
      downloadExcel(){
        window.open("http://47.108.251.250:3296/api/scxtrjlsj/downLoadExcel?token="+getToken());
      },

      /*** 当每页数量发生变化时触发该事件 */
      handleSizeChange(size) {
        console.log(size);
        this.pageSize = size;
        //将每页显示的数量交给成员变量
        this.search(this.pageNo, size);
      },
      /*** 当页码发生变化时触发该事件 */
      handleCurrentChange(page) {
        console.log(page);
        this.pageNo = page;
        //调用查询方法
        this.search(page, this.pageSize);
      },
      // 序号计算
      indexMethod (index) {
      // index默认在0开始，这里+1
        return index + 1 + (this.pageNo - 1) * this.pageSize
      },
      // 获取当前日期
      filterTime() {
        var date = new Date();
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? '0' + m : m;
        var d = date.getDate();
        d = d < 10 ? '0' + d : d;
        this.currentTime = y + '-' + m + '-' + d;
        // console.log(typeof(new Date(this.currentTime)));
      },
    }
  }
  </script>

  <style lang="scss" scoped>
  // 标题
  .mytitle {
    font-size: large;
    padding-left: 10px;
    margin-bottom: 16px;
    float: left;
  }

  //按钮组
  .myButtons {
    float: right
  }

  //格子的样式
  .bg-white {
    background: #ffffff;
  }

  .grid-content {
    padding: 10px;
    margin-bottom: 10px;
    border-radius: 4px;
  }

  .calendar ::v-deep .el-button-group::before {
    display: none;
  }

  .calendar ::v-deep .el-button-group::after {
    display: none;
  }

  // 分割线样式
  .el-divider--horizontal {
    display: block;
    height: 2px;
    width: 100%;
    margin: 24px 0;
  }

  // 表单各项的样式
  .el-form-item {
    margin: 15px 10px 15px 10px;
  }

  //表单禁用字体样式
  .el-input.is-disabled ::v-deep .el-input__inner {
      color: #606266;
    }
  //对话框宽度
  // .customWidth{
  //         width:80%;
  //     }
  ::v-deep .saveAsDialog {
    width: 50% !important;
  }

  ::v-deep .el-table .cell{overflow: unset}
  //日期选择框宽度
  .el-date-editor.el-input, .el-date-editor.el-input__inner { width: 200px; }

  .el-input {
    width: 200px;
  }

  .tagstyle{
      cursor: pointer;
    }
  </style>
